package com.sihan.swvp.service.sys;

import java.util.Date;
import java.util.List;
import java.util.Map;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.sihan.swvp.common.CommonUtil;
import com.sihan.swvp.dao.sys.SyncDao;

@Component
public class SyncService {
	@Autowired
	SyncDao syncDao;

	/**
	 * 获取最后一次同步成功的时间
	 * @param jobid
	 * @return
	 */
	public String getLastSyncTime(String jobid) {
		// TODO Auto-generated method stub
		Map<String, Object> map = syncDao.getLastSyncTime(jobid);
		if(null != map){
			Object t = map.get("lasttime");
			
			return String.valueOf(t);
		}
		else{
			return null;
		}
	}
	
	/**
	 * 更行同步时间信息
	 * @param jobid 同步工作ID
	 * @param sttime 开始执行同步任务的时间
	 * @param syncmsg 同步消息
	 * @param upsynctime 是否更新同步时间戳，如果是以固定时间段进行同步建议为false
	 */
	public void updateSyncTime(String jobid,Date sttime,String syncmsg,boolean upsynctime){
		String lastsync = getLastSyncTime(jobid);
		Date synctime = upsynctime ? sttime : CommonUtil.o2date(lastsync);
		syncDao.deleteSyncTime(jobid);
		if(syncmsg.length() > 1200){
			syncmsg = syncmsg.substring(0, 1200);
		}
		syncDao.updateSyncTime(jobid,synctime,sttime,syncmsg);
	}

	/**
	 * 执行同步数据插入操作
	 * @param table 
	 * @param fields
	 * @param values
	 * @param params
	 */
	public void exeInsert(String table,String[] fields,Object[] values,Map<String,Object> params) {

		syncDao.exeInsert(table,fields,values,params);
	}
	
	/**
	 * 执行同步数据更新操作
	 * @param table
	 * @param fieldValeus
	 * @param params
	 */
	public void exeUpdate(String table,Map<String,Object> fieldValeus,Map<String,Object> params) {

		syncDao.exeUpdate(table, fieldValeus, params);
	}

	/**
	 * 执行同步数据查询操作
	 * @param table
	 * @param fields
	 * @param params
	 * @return
	 */
	public List<Map<String,Object>> exeSelection(String table,String[] fields,Map<String,Object> params) {

		return syncDao.exeSelection(table, fields, params);
	}
}
